NOT APPLICABLE
NOT APPLICABLE
NOT APPLICABLE
The present invention relates to varying the bandwidth used on a shared bus, such as the Universal Serial Bus (USB).
The need to vary the bandwidth used by a device arises in many situations. Some devices may be capable of connecting to different types of transmission lines, and need to adapt their bandwidth to the available bandwidth of the particular transmission media. Transmissions over the Internet may have varying bandwidth depending upon a particular route assigned for particular transmission. U.S. Pat. No. 6,014,694 shows adapting the compression ratio of video to accommodate varying bandwidths over the Internet.
A number of buses could benefit from varying the bandwidth used, such as 1494, Bluetooth, and 802.11.
With respect to a shared bus, such as the USB, the amount of bandwidth used by one device may limit the amount of bandwidth available to another device. A USB controller will allocate bandwidths to the different devices. U.S. Pat. No. 6,101,550 illustrates one type of USB controller.
When a particular device on the USB is allocated a bandwidth less than is optimum, the device can make adjustments to work with the bandwidth assigned. For example, U.S. Pat. No. 5,848,266 illustrates varying the sampling rate to adjust to the bandwidth allocated on a USB, in particular for bulk transfer mode.
The present version of the USB allows up to 127 devices to connect to a computer via the bus. The bus has a maximum data rate of 12 megabits/second. Any individual device can request more than half of this maximum. The bandwidth is divided into frames which are controlled by the bus controller in the host. Four different types of data transfer are supported:
(1) Interrupt. This is used by devices which send very little data, such as a mouse or keyboard.
(2) Bulk. This transfers a 1-time block of data, and is used by devices such as printers.
(3) Isochronous. This is used by streaming devices which send a constant datastream, such as video or audio.
(4) Control. This is used to control the device, and is normally used for small data transfers.
Isochronous and interrupt type transfers have bandwidth reserved and available at interface configuration time. Bulk and control transfers use bandwidth based on the actual bandwidth available at the time of transfer.
When too many devices want to use the USB, the last device to attempt to obtain bandwidth may be blocked from using the bus. The bus controller then must either not allocate any bandwidth, or must allocate less bandwidth to other devices. If too little is allocated, another device may not be able to use the bandwidth at all, or may suffer noticeable degradation of quality. It would be desirable to have a method for varying the bandwidth with minimal degradation of quality. It would also be desirable to have a method which allows the devices themselves to determine how much bandwidth they can live with, and be able to work with existing bus controllers.
The present invention provides an apparatus and method for intercepting messages between the bus controller and a device attempting to connect over the bus. Based on the intercepted message, the existing device using bandwidth can determine whether it can relinquish some of its bandwidth allocation while maintaining sufficient transmission quality. Thus, the already connected devices will make the determination if they can relinquish bandwidth, to allow a new device to connect.
The device giving up bandwidth can decrease usage step by step in a reiterative polling process, so that it doesn""t have to give up more than is needed. Each device will know its minimum bandwidth requirement and the possible tradeoffs it can make, such as in quality, resolution and frame rate.
In one embodiment, for a USB bus, a filter driver is used to intercept an Allocation Failure Event (AFE) sent from the bus controller to a new device rejecting its request for bandwidth. The filter allows the connected device to determine whether it can relinquish bandwidth while still maintaining sufficient quality of transmission. The AFE notification may be set up to be intercepted only for a designated class of devices, such as for streaming devices. In other words, bandwidth requests for interrupt or bulk mode would not be intercepted, while those for isochronous would be intercepted.
In one embodiment, the USB bandwidth monitor of the present invention can work with an existing USB controller, without requiring the replacement of the controller. For a further understanding of the nature and advantages of the invention, reference should be made to the following description taken in conjunction with the accompanying drawings.